import axios from 'axios'
import load from '@/components'
import { createApp } from 'vue'
let $loading = createApp({}).use(load)
// console.log($loading);
const http = axios.create({
    baseURL: 'https://api.it120.cc', // 配置公共接口地址
    timeout: 5000 // 配置请求超时时间 
})

// axios请求拦截 interceptors 包含请求和响应拦截的对象
// request 请求的意思
http.interceptors.request.use(config => {
    $loading.config.globalProperties.$loading.show('拼命加载中...')
    // config 关于请求的配置信息
    if(localStorage.getItem('token')) {
        config.headers.token = localStorage.getItem('token')
    }
    return config
}, err => {
    // 当请求发生错误时 可以将错误抛出
    Promise.reject(err)
})

// axios响应拦截 
// response 响应的意思
http.interceptors.response.use(res => {
    // res 表示服务器返回的响应信息
    // 在这里我们可以对响应信息进行预处理
    // 也可以在这里对错误代码字典进处理
    // 大家经常性的会看到很多的错误码 500 404 403 -1  303
    switch(res.data.code) {
        case 500:
            console.log('服务器错误')
            break;
        case 404:
            console.log('请求资源找不到')
            break;
    }
    $loading.config.globalProperties.$loading.hide()
    return res.data

}, err =>{
    Promise.reject(err)
})

export default http


